home *** CD-ROM | disk | FTP | other *** search
-
- % Demonstration für TOY Prolog
-
- % Problem : Einfärben einer "Karte" mit 4 Farben, so daß
- % benachbarte Gebiete verschiedene Farben erhalten.
-
- % Erweiterung eines Beispiels aus : Kluzniak/Szpakowicz,
- % "Prolog for Programmers" (dort zitiert aus Pereira & Porto, 1980)
-
- % Verwendete "Karte" :
-
- % +-----------------+--------------------+
- % | R3 | R6 |
- % | +----+--+------+-------------+---+ |
- % | | |R4| | | |
- % +--+ +--+ | | |
- % | | R2 |R5 | |
- % | | | +--+
- % | | | | |
- % | +----------------------------+---+ |
- % | R1 |
- % +--------------------------------------+
-
- % Folgendes Prädikat definiert die Relation "Farbe A darf an Farbe B angrenzen"
-
- nachbarn(A, B) :- farbe(A), farbe(B), not A = B.
-
- % Die Farben sind als Zahlen definiert (Füllmuster für die graphische
- % Ausgabe, daher "krumme" Zahlen) :
-
- farbe(2).
- farbe(4).
- farbe(6).
- farbe(8).
-
- % Die folgenden Prädikate geben die einzelnen Kartenflächen graphisch aus.
-
- r1 :- grf_poly([192,184, 224,184, 224,248, 384,248, 384,216, 416,216,
- 416,280, 192,280, 192,184]).
-
- r2 :- grf_poly([224,152, 256,152, 256,184, 288,184, 288,152, 352,152,
- 352,248, 224,248, 224,152]).
-
- r3 :- grf_poly([192,120, 320,120, 320,152, 224,152, 224,184, 192,184,
- 192,120]).
-
- r4 :- grf_poly([256,152, 288,152, 288,184, 256,184, 256,152]).
-
- r5 :- grf_poly([352,152, 384,152, 384,248, 352,248, 352,152]).
-
- r6 :- grf_poly([320,120, 416,120, 416,216, 384,216, 384,152, 320,152,
- 320,120]).
-
- % Folgendes Prädikat findet eine Lösung des Problems :
-
- lösung(R1, R2, R3, R4, R5, R6) :-
- nachbarn(R1, R3), nachbarn(R1, R2), nachbarn(R1, R5), nachbarn(R1, R6),
- nachbarn(R2, R3), nachbarn(R2, R4), nachbarn(R2, R5), nachbarn(R2, R6),
- nachbarn(R3, R4), nachbarn(R3, R6),
- nachbarn(R5, R6).
-
-
- % Folgendes Prädikat sucht die nächste Lösung und gibt sie graphisch aus :
-
- ausgabe :- lösung(R1, R2, R3, R4, R5, R6), grf_f_type(2),
- grf_f_style(R1), r1,
- grf_f_style(R2), r2,
- grf_f_style(R3), r3,
- grf_f_style(R4), r4,
- grf_f_style(R5), r5,
- grf_f_style(R6), r6.
-
- % Folgendes Prädikat sucht alle Lösungen und gibt sie aus (zwischen zwei
- % verschiedenen Lösungen wird auf einen Tastendruck gewartet).
-
- farbenproblem :- grf_mode, see(keybd), ausgabe, rch, fail.
- farbenproblem :- seen, txt_mode.
-
- end.
-
-